1. Field of the Invention
The present invention relates generally to a system that uses hardware description files (HDF) to generate component selection information. The method enables a application specific computer system configuration device (a xe2x80x9csizerxe2x80x9d) and a framework that provides common services to all sizers (a xe2x80x9cframeworkxe2x80x9d) to store, retrieve, and process computer hardware information so that a user can interactively configure a computer system.
2. Description of the Related Art
The original computers were very complex devices that required skilled technicians and scientists to operate. When a new device, such as a printer, was added to the computer, special software and hardware needed to be developed specifically for the new device. With the advent of personal computers, it became impractical to require users to develop new software and hardware whenever new hardware was added.
Computer components eventually became standardized and one of the important pieces of the puzzle was the Disk Operating System, or DOS. Originally DOS only supported a small number of devices such as printers, floppy drives, and hard disk drives. In addition, DOS was severely limited in the number of different computer configurations and components such as memory and peripherals that could be supported.
Today, the typical consumer is presented with an astonishing number of choices with respect to the configuration of a new computer. A computer can be tailored to the particular needs of every user, from a multi-national corporation with immense database requirements to an individual who only desires to log into the Internet. There are computers specialized to perform such tasks as bulk memory storage, communications, and game playing. Depending upon a user""s needs, a computer can be configured with anywhere from 16 Megabytes (Megs) to hundreds of Megs of Random Access Memory (RAM). Static storage such as hard disk drives can vary in capacity from gigabytes (109 bytes) to Terabytes (1012 bytes) of data, each arranged in any one of a large number of configurations. Obviously, large amounts of RAM and static storage cost proportionally more money. As a result, there is usually a tradeoff between price and performance.
The number of possible devices that can be added to any particular system has also grown. Computers now routinely come with devices that were unavailable even a few decades ago, such as speakers, CD-ROM drives, and fax modems. In addition, a user can add a large number of additional components such as tape drives, network cards, and specialized, game playing devices such as a joy stick. The number of possible choices for a computer system configuration is multiplied by the number of manufacturers that produce each component producing perhaps millions of possible systems.
Using a method implemented according to the invention, computer hardware is specified using a hardware description language (HDL) and the specifications are stored in Hardware Definition Files (HDF). Using HDL and HDFs, a device such as a interactive computer system configuration device, or sizer, is able to allow a user to interactively specify requirements for a computer and peripheral hardware. Although HDL is effective at describing computer hardware, HDL is designed to describe hierarchical structures in general and is not limited to computer hardware.
HDL does not have control flow nor assignment statements, that is, it is purely designed to define data. In one embodiment, data is an ordered collection of trees whose leaves consist of strings and integers. Moreover, the branches of the trees are labeled with identifiers. HDL has no direct tie to computer hardware, but, since computer hardware is built hierarchically (a system consists of memory/CPU/storage subsystems, a memory subsystem consists of modules, which in turn have attributes, all of which can be addressed by a keyword), a tree can be effectively used to describe computer hardware. Rarely does one want to describe only one instance of a tree. Typically, one is interested in a whole sequence of trees that share some more or less complex property. The complex property is expressed in its own tree rather than enumerate it in every tree individually. This feature is built into HDL and makes the hardware description file very concise. The general approach facilitates extending or modifying a hardware description. For example, a peripheral devices such as a tape backups or printer can be added to a model without compromising the format of the model as it already exists.
In one embodiment, HDL enables a user to create extendable and modifiable hardware descriptions that can be utilized by a sizer framework to generate a computer system configured to a customer""s specifications. Every piece of hardware can be represented in HDL as a tree. A computer box has room for, among other things, a mother board, a network interface card (NIC), and disk drives. The computer box, the mother board, the network card, and the disk drives can all be represented in HDL as hardware trees. In the case of the computer box, the tree would contain a leaf, or terminal, which could be replaced by a tree representing a disk drive. In this way, a disk drive can be added to the representation of the computer box without compromising any other device that might already be present, like an existing network card. If there are no available terminals in the HDL description of the computer box, HDL makes apparent that another disk drive could not be added to the configuration. In addition, a terminal that represents a half size slot would not be able to accommodate a tree representing a full size device. In one embodiment, a decision on the disk drive""s inclusion may be facilitated by a method that converts requirements between physical and logical representations. In this way, HDL prevents a user of a sizer utilizing HDL from creating an unusable configuration.